第10章 Go的部署

本章主要内容

  • 把Go Web应用部署到独立服务器
  • 把Go Web应用部署到云端
  • 把Go Web应用部署到Docker容器

在学习了如何使用Go开发Web应用之后,接下来要考虑的自然就是如何部署这些应用了。Web应用跟其他类型的应用在部署方式上存在着非常大的不同。比如,桌面应用和移动应用就是部署在智能手机、平板电脑、笔记本电脑等终端用户的设备上,而Web应用则是部署在服务器上,然后通过终端用户设备上的浏览器等客户端对其进行访问。

因为Go的可执行程序都会被编译为单独的二进制文件,所以部署Go Web应用程序在某种程度上可以说是非常简单的。除此之外,Go还可以编译出不需要引用任何外部库的静态链接二进制文件,这种文件可以作为独立的可执行文件存在。不过一个完整的Web应用通常不会只包含一个可执行文件,它一般还会包含一些模板文件,以及诸如JavaScript、图片、样式表(style sheet)这样的静态文件。本章将会介绍几种把Go Web应用部署到互联网的方法,其中大部分方法都是通过云供应商(cloud provider)实现的。本章将要介绍的部署方法包括:

  • 在一个完全由用户本人控制的物理或虚拟的服务器上实施部署,本章正文将使用IaaS供应商Digital Ocean的服务器作为例子;
  • 在云PaaS供应商Heroku上实施部署;
  • 在另一家云PaaS供应商Google App Engine(GAE)上实施部署;
  • 将应用Docker化(dockerized)为容器,然后将其部署到本地Docker服务器以及Digital Ocean的虚拟机上。

云计算

云计算,简称“云”,是一种获取网络和计算机使用权限的模型,这种模型可以提供一个由服务器、存储空间、网络以及其他可共享资源组成的共享资源池,从而使这些资源的用户可以避免不必要的前期投入,也可以让这些资源的供应商更加高效地利用这些资源为更多的用户提供服务。云计算在最近这些年吸引了非常多的关注,时至今日,包括Amazon、Google和Facebook在内的绝大部分基础设施以及服务供应商都使用这种模型作为他们的标准收费模型。

需要注意的是,部署一个Web应用通常会有很多种不同的方法可选,比如,本章介绍的几种部署方法之间就存在着非常多的不同之处。还有一点要说明的是,本章介绍的部署方法关注的是如何部署个人的Web应用,真正生产环境下的部署通常会包含运行测试套件、实施持续集成以及调整服务器等一系列额外的任务,具体过程会比这里介绍的要复杂得多。

本章虽然介绍了很多概念和工具,但由于这些概念和工具每个都值得用整整一本书的篇幅去介绍,所以本章并没有试图全面讲解这些技术和服务。相反,本章只会关注这些技术的一部分知识,读者可以把这些知识看作是学习相关技术的起点。

本章展示的部署例子将会用到7.6节介绍过的简单Web服务,并在条件允许的情况下使用PostgreSQL(因为GAE不支持PostgreSQL,所以在介绍GAE的部署方法时,本章将使用基于MySQL的Google Cloud SQL)。与此同时,本章还会假设独立的数据库服务器上已经预先设置好了数据库的相关设置,所以本章将不会介绍具体的数据库设置方法,有需要的读者可以通过复习2.6节来获得一个简短的设置介绍。

results matching ""

    No results matching ""